This invention relates to basic input/output systems (BIOS) programs and, more particularly, to improved memory testing.
In a processor-based system, powering on the system is commonly known as a xe2x80x9cbootxe2x80x9d process. The boot process is performed by a program, usually located in a read-only memory (ROM) or flash memory of the processor-based system. The ROM/flash program includes a software program known as the basic input/output system, or BIOS. The BIOS program executes commands such that the various circuitry of the processor-based system may be initialized. The BIOS program also includes functions that may be used by software, including operating systems, for communicating with different devices in the processor-based system.
Upon receiving power to the processor-based system, the BIOS program immediately begins execution. The BIOS performs initialization functions, such as detecting and testing the memory, the display, the non-volatile media, such as hard disk and floppy disk drives, and so on. In some systems, an abbreviated power-on, or xe2x80x9cquick-boot,xe2x80x9d may be available, which may test some, but not all circuitry.
Once the BIOS program completes initialization and testing of the system, control is typically transferred to an operating system, usually located on the hard disk drive. Once the operating system gains control of the processor-based system, all run-time operations, including any execution of application programs, are controlled by the operating system. The operating system may or may not utilize the BIOS functions in communicating with the hardware of the processor-based system.
Typically, the BIOS program performs minimal system initialization, followed by memory sizing, error-correcting code (ECC) memory filling if required, and varying levels of memory testing. Once the memory is deemed sound by the program, the remainder of the system is initialized. Only after all these memory-related tasks are complete will the BIOS program transfer control of the system, including processors, memory, and input/output (I/O), to the operating system. This serial approach to initialization results in delays before the system is available for runtime operation.
The current memory technology allows for very inexpensive processor-based systems to nevertheless include a large amount of memory. These very large memory arrays may create significant delay during system initialization. Exhaustive tests on large amounts of memory may take 10, 20, or even 30 minutes to complete. Where the memory is tested in the BIOS, the system is required to be xe2x80x9coff-linexe2x80x9d during the memory testing.
Thus, there is a continuing need to quickly boot an operating system on a processor-based system while still performing a thorough test of the memory.